﻿// -------------------------------------------------------------------------
//    @FileName         :    NFSkyArenaPart.h
//    @Author           :    gaoyi
//    @Date             :    24-8-30
//    @Email            :    445267987@qq.com
//    @Module           :    NFSkyArenaPart
//
// -------------------------------------------------------------------------

#pragma once

#include <NFLogicCommon/NFLogicShmTypeDefines.h>
#include "NFPart.h"
#include "proto_common_arena.nanopb.h"

namespace proto_ff
{
    class Proto_CSSkyArenaData;
}

class NFSkyArenaPart : public NF_OBJECT_TEMPLATE_MACRO(NFSkyArenaPart, EOT_LOGIC_PART_MIN_ID + PART_SKYARENA, NFPart)
public:
    NFSkyArenaPart();

    virtual ~NFSkyArenaPart();

    int CreateInit();

    int ResumeInit();

public:
    //******************part调用接口******************
     /**
     * @brief 所有部件初始化完成
     * @return
     */
    int OnInit() { return 0; }

public:
    /**
     * @brief 从数据库中加载数据
     * @param data
     * @return
     */
    int LoadFromDB(const proto_ff::tbRoleDetail *pDBData) override;

    /**
     * @brief 从配置中初始化数据
     * @return
     */
    int InitConfig(proto_ff::tbRoleDetail *pDbData, const RoleOne &stRoleOne) override;

    /**
     * @brief 存储DB部件入口
     * @param proto
     * @return
     */
    int SaveDB(proto_ff::tbRoleDetail *pDBData) override;

    /**
     * @brief 登陆入口
     * @return
     */
    int OnLogin() { return 0; }

    /**
     * @brief 登出入口
     * @return
     */
    int OnLogout() { return 0; }

    /**
     * @brief 掉线入口
     * @return
     */
    int OnDisconnect() { return 0; }

    /**
     * @brief 重连入口
     * @return
     */
    int OnReconnect() { return 0; }

    ////////////////////////////////// 每日零点 每周一零点 刷新接口 ///////////////////////////////////
    /**
     * @brief 每日零点 刷新接口
     * @return
     */
    int DayTick() { return 0; }

    /**
     * @brief 每日零点 刷新接口
     * @return
     */
    int WeekTick() { return 0; }

    /**
     * @brief 每月刷新接口
     * @return
     */
    int MonthTick() { return 0; };

public:
    /**
     * @brief update
     */
    int LogicTick() { return 0; }
public:
    int MakePlayerDataCS(proto_ff::Proto_CSGetRoleRsp* pCSGetRoleRsp) override;
    int MakeCityPlayerData(proto_ff::CityRoleInfo* pGCCityRoleInfo) override;
    int MakeDataCS(proto_ff::Proto_CSSkyArenaData* pRoleSkyarenaData) const;
private:
    RoleSkyarenaData m_stData;
};
